//
// Created by MikeChen on 2025/3/27.
//


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
    /*
     注意：++和--运算符只能用于变量 而不能用于常量或者表达式
        如 5++或--
        如 --（i+j）等

        使用++和--的时候 会出现一种情况，如i+++j，是理解成
            (i++)+j 还是
            i+(++j) 呢
        所以，为了避免二义性，可以加小括号，如(i++)+j

     */
    int i = 1,j;
    j=++i;//i=i+1;j=i;
    printf("i:%d,j:%d\n",i,j);
    j=i++;//j=i;i=i+1;
    printf("i:%d,j:%d\n",i,j);

    i = 0;
    printf("++i,++i,++i,++i,++i,++i = ");
    printf("%d,\t%d,\t%d,\t%d,\t%d,\t%d\t\n", ++i, ++i, ++i, ++i, ++i, ++i);
    //++i,++i,++i,++i,++i,++i=6,	6,	6,	6,	6,	6
    i=0;
    printf("i++,i++,i++,i++,i++,i++ = ");
    printf("%d,\t%d,\t%d,\t%d,\t%d,\t%d\t\n", i++, i++, i++, i++, i++, i++);
    //i++,i++,i++,i++,i++,i++=5,	4,	3,	2,	1,	0
    i=0;
    printf("i++,i++,i++,++i,++i,++i = ");
    printf("%d,\t%d,\t%d,\t%d,\t%d,\t%d\t\n", i++, i++, i++, ++i, ++i, ++i);
    //i++,i++,i++,++i,++i,++i=5,	4,	3,	6,	6,	6
    i=0;
    printf("i++,i++,i,i,++i,++i     = ");
    printf("%d,\t%d,\t%d,\t%d,\t%d,\t%d\t\n", i++, i++, i, i, ++i, ++i);
    //i++,i++,i,i,++i,++i     = 3,	2,	4,	4,	4,	4

    /*
        总结：
            从右往左运算
            当输出为 i++ 则输出当前i后再赋值i=i+1;
            当输出为++i或者i时，先进行完所有的运算再输出i的最终值
    */
    system("read -rsp $'Press enter to continue...\\n'");
    return EXIT_SUCCESS;
}